package mybatis.mappers;

import models.entities.BrandEntity;
import models.entities.DuplicateEntity;
import models.entities.PictureEntity;
import models.entities.ProductEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ImageMapper {
    List<PictureEntity> getImagesWithoutMD5();

    void updateMD5(PictureEntity pictureEntity);

    PictureEntity getImageByMD5(@Param("md5") String md5);

    List<ProductEntity> getProductsByImageId(@Param("imageId") int imageId);

    void setOriginalImageForProductWithDuplicate(@Param("originalId") int originalId,
                                                 @Param("existentImageId") Integer existentImageId, @Param("productId") int productId);

    List<BrandEntity> getBrandsByImageId(@Param("imageId") int id);

    void setOriginalImageForBrandWithDuplicate(@Param("originalId") int originalId, @Param("existentImageId") int existentImageId, @Param("brandId") int brandId);

    void deleteImage(@Param("imageId") int id);


    void changePath(PictureEntity pictureEntity);

    int getImagesWithoutMD5TotalCount();

    void clearMD5();

    void addDuplicate(@Param("originalImageId") int originalImageId, @Param("duplicateImageId") int duplicateImageId);

    List<DuplicateEntity> getDuplicates();

    void readDuplicate(@Param("id") int id);

    PictureEntity getImage(@Param("id") int id);

    PictureEntity getProductImage(@Param("productId") int productId, @Param("imageId") int originalId);

    void deleteProductImage(@Param("imageId") int imageId, @Param("productId") Integer productId);
}
